home *** CD-ROM | disk | FTP | other *** search
/ Extra Heft 12 / Extra Heft12.bin / input64 / 11_86.d64 / joytast.s < prev    next >
Text File  |  1995-08-17  |  4KB  |  183 lines

  1. ;***************************************
  2. ;*                                     *
  3. ;*   ╘┴╙╘┴╘╒╥ / ╩╧┘╙╘╔├╦┴┬╞╥┴╟┼        *
  4. ;*                                     *
  5. ;*     (W) 1986 BY ═ARTIN ╟EBHARDT     *
  6. ;*                                     *
  7. ;***************************************
  8.  
  9. ;--------------------------------------
  10. :STRFLG   = $0D  ;$FF: ╙TRING
  11. :INTFLG   = $0E  ;$80: ╔NTEGER
  12. :VAR      = $49  ;┌EIGER AUF ╓ARIABLE
  13. :FAC      = $61  ;╞LIESSKOMMAAKKU #1
  14. :RPNT     = $FB  ;READPOINTER UND
  15. :WPNT     = $FD  ;WRITEPOINTER FUER TRANSFER
  16.  
  17.  
  18. :CIA1     = $DC00   ;├╔┴ 1:
  19. :PRA      = CIA1+0  ; ╨ORT ┴
  20. :PRB      = CIA1+1  ; ╨ORT ┬
  21. :DDRA     = CIA1+2  ; ─ATENRICHTUNG ╨.┴
  22. :DDRB     = CIA1+3  ; ─ATENRICHTUNG ╨.┬
  23.  
  24. :CHRGET   = $0073
  25. :CHRGOT   = $0079
  26. :ERROR    = $A43A ;╞EHLERMELDUNG AUSGEBEN
  27. :KOMMA    = $AEFD ;PRUEFT AUF ╦OMMA
  28. :GETVAR   = $B08B ;HOLT ╓ARIABLENADRESSE NACH VAR
  29. :SETFAC   = $B3A2 ;Y-╥EGISTER NACH FAC
  30. :GETBYT   = $B79B ;┬YTEWERT NACH X HOLEN
  31. :STOREFAC = $BBD0 ;FAC NACH ╓ARIABLE SCHREIBEN
  32.  
  33. ;--------------------------------------
  34.          ;┬┴╙╔├-╚EADER
  35.          ;------------
  36. ORG $0801 ;ORG-BASIC
  37.  
  38. W ZERO3  ;LINK-POINTER
  39. W 1986   ;ZEILEN-NO
  40. B $9E    ;SYS-TOKEN
  41. B "2127:"
  42. B $8F    ;REM-TOKEN
  43. B $22    ;"
  44. B "JOYTAST (C) INPUT 64   "
  45. B "DURCH ╥╒╬ PROGRAMM NACH 53000 KOPIEREN!"
  46. B $22    ;"
  47. :ZERO3 B 0,0,0
  48.  
  49.          ;╓ERSCHIEBE-╥OUTINE
  50.          ;------------------
  51. :BEGIN    LDA #<CODE   ;LOW- UND
  52.           LDY #>CODE   ;HIGH-ADRESS
  53.           STA RPNT     ;VON QUELLE
  54.           STY RPNT+1   ;UEBERGEBEN
  55.           LDA #<START
  56.           LDY #>START  ;DITO
  57.           STA WPNT     ;FUER
  58.           STY WPNT+1   ;ZIEL
  59.           LDX #BLOCKS  ;BLOCKANZAHL LADEN
  60.           LDY #00      ;CLR BYTE-COUNTER
  61. :TRLOP    LDA (RPNT),Y ;LOAD AND
  62.           STA (WPNT),Y ;STORE BYTES
  63.           INY          ;BIS ZUM
  64.           BNE TRLOP    ;PAGE-ENDE
  65.           INC RPNT+1   ;ZEIGER-HIGH
  66.           INC WPNT+1   ;ERHOEHEN
  67.           DEX          ;EVTL.
  68.           BNE TRLOP    ;NAECHSTE PAGE
  69.           RTS          ;ZUM ┬┴╙╔├
  70.  
  71.  
  72. :CODE = *
  73.          ;╨ROGRAMMSTART
  74.          ;-------------
  75. ORG 53000
  76. :START    JSR KOMMA
  77.           JSR GETVAR
  78.           STA VAR
  79.           STY VAR+1
  80.           LDA STRFLG
  81.           ORA INTFLG
  82.           BEQ WEITER
  83.           LDX #22    ;╘┘╨┼ ═╔╙═┴╘├╚
  84.           JMP ERROR  ;┼╥╥╧╥
  85. :WEITER   JSR CHRGOT ;LETZTES ┌EICHEN
  86.           CMP #$2C   ;╦OMMA?
  87.           BNE WARTEN ;==>KEIN ╞LAG
  88.           JSR GETBYT
  89.           CPX #0     ;ODER ╞LAG =0:
  90.           BEQ WARTEN ;==> WARTEN
  91.  
  92.          ;NICHT WARTEN
  93.          ;------------
  94.           JSR TAST   ;├ODE IN Y
  95. :FERTIG   JSR SETFAC
  96.           JSR STOREFAC ;IN ╓ARIABLE SCHREIBEN
  97.           RTS        ;┼╬─┼
  98.  
  99.          ;WARTEN, BIS ╘ASTE GEDRUECKT
  100.          ;---------------------------
  101. :WARTEN   JSR TAST
  102.           CPY #1
  103.           BEQ WARTEN
  104.           JMP FERTIG
  105.  
  106.          ;╘ASTATURABFRAGE
  107.          ;---------------
  108. :TAST     PHP        ;STATUS RETTEN
  109.           SEI        ;INTERRUPT SPERREN
  110.           LDA DDRA   ;─ATENRICHTUNG RETTEN
  111.           PHA
  112.           LDA DDRB
  113.           PHA
  114.           LDA #$FF   ;UND NEU SETZEN
  115.           STA DDRA
  116.           LDA #$00
  117.           STA DDRB
  118.           ;
  119.           LDX #$7F   ;FUER ╙TOP-┴BFRAGE ERMOEGLICHEN
  120.           LDY #5
  121. :LOOP     DEY
  122.           BMI RAUS   ;KEINE ╘ASTE ==>RAUS
  123.  
  124.           INC DDRA
  125.           LDA PRA    ;╩OYSTICK ?
  126.           DEC DDRA
  127.           CMP TABJ,Y
  128.           BEQ RAUS   ;JA, DANN RAUS
  129.  
  130.           LDA TABA,Y ;┌EILE FUER ┴BFRAGE
  131.           STA PRA
  132.           LDA PRB    ;╘ASTE?
  133.           STX PRA
  134.           CMP TABB,Y ;VERGLEICHEN
  135.           BNE LOOP   ;NICHT GLEICH, DANN LOOP
  136.  
  137.           ;
  138. :RAUS     PLA        ;─ATENRICHTUNG REKONSTRUIEREN
  139.           STA DDRB
  140.           PLA
  141.           STA DDRA
  142.           INY
  143.           INY
  144.           PLP
  145.           RTS        ;╘ASTATURCODE WIRD
  146.                      ;IN Y UEBERGEBEN
  147.                      ;KEINE ╘ASTE: 1
  148.  
  149. ;TABELLEN FUER ABFRAGE
  150.  
  151. :TABJ                ;╩OYSTICK
  152.         B %11111110  ;OBEN
  153.         B %11111101  ;UNTEN
  154.         B %11110111  ;RECHTS
  155.         B %11111011  ;LINKS
  156.         B %11101111  ;FEUER
  157.  
  158. :TABA                ;╘ASTATUR, ┌EILEN
  159.         B %11111101  ;A
  160.         B %11111101  ;Z
  161.         B %10111111  ;/
  162.         B %11011111  ;.
  163.         B %01111111  ;SPACE
  164.  
  165. :TABB                ;╘ASTATUR, ╙PALTEN
  166.         B %11111011  ;SIEHE OBEN
  167.         B %11101111
  168.         B %01111111
  169.         B %11101111
  170.         B %11101111
  171. ;--------------------------------------
  172. :CDEND = *-START
  173. :BLOCKS := >CDEND
  174. :LOW = <CDEND-CODE
  175. IF LOW > 0
  176. :BLOCKS := BLOCKS+1
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.